package com.swt.gap.dao;

import com.github.pagehelper.Page;
import com.swt.gap.model.entity.Task;
import com.swt.gap.model.vo.TaskVO;
import com.swt.gap.model.vo.taskresult.TaskAndResult;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface TaskDao {
    int deleteByPrimaryKey(Integer taskId);

    int insertSelective(Task record);

    Task selectByPrimaryKey(Integer taskId);

    int updateByPrimaryKeySelective(Task record);

    //将task的is_deleted置1
    int deleteTask(Integer taskId);

    //将task的is_deleted置0
    int restoreTask(Integer taskId);

    Task selectByTaskName(String taskName, Integer createdBy);

    Page<TaskVO> getRecentTaskByKey(@Param("keyword") String keyword,
                                    @Param("userId") Integer userId);

    Page<TaskVO> getTaskByKey(@Param("keyword") String keyword,
                              @Param("userId") Integer userId);

    Page<TaskVO> getTaskByKey2(@Param("keyword") String keyword,
                              @Param("userId") Integer userId);

    Page<TaskVO> getRecentJoinTaskByKey(@Param("keyword") String keyword,
                                        @Param("userId") Integer userId);

    Page<TaskVO> getJoinTaskByKey(@Param("keyword") String keyword,
                                  @Param("userId") Integer userId);

    Page<TaskVO> getJoinTaskByKey2(@Param("keyword") String keyword,
                                  @Param("userId") Integer userId);

    Page<TaskVO> getRunningTaskBykey(@Param("keyword") String keyword,
                                     @Param("userId") Integer userId,
                                     @Param("status") Integer status);

    Page<TaskVO> getDeleTaskBykey(@Param("keyword") String keyword,
                                     @Param("userId") Integer userId);

    //获取登陆者创建的任务（有分析结果的），不含被删除的
//    List<Task> listTaskByCreatedUserId(Integer createdBy);


    List<TaskAndResult> selectHasResultTask(@Param("createdBy") Integer createdBy,
                                             @Param("keyword") String keyword);

    List<Task> getAccessTask(@Param("keyword") String keyword, @Param("createdBy") Integer createdBy);

    //获取全部未删除的任务
    List<Task> listAllActiveTask();

   /* Page<TaskVO> getTaskByStatusAndGroup(@Param("keyword") String keyword,
                                     @Param("userId") Integer userId,
                                     @Param("status") Integer status);*/

    Page<TaskVO> getTaskByStatusAndGroup2(@Param("keyword") String keyword,
                                         @Param("userIds") List<Integer> userIds,
                                         @Param("status") Integer status);
}